A resource management software system is a tool used by resource managers and staffing managers in professional service industries to (a) match resource supply to resource demand, (b) assign the right resources to the right tasks or projects, and (c) do so at the right time. For example, if a skilled Java programmer (a resource) were needed for an eight week programming project in the June and July timeframe, and there was no single Java programmer available for that stretch of time, then a resource management software system might try to source (for example) two Java programmers who can be scheduled sequentially, say a first programmer for four weeks in the June timeframe and a second programmer for four weeks in the July timeframe.
During the staffing process, and to accomplish sourcing based on a given particular skill or level of skill, many resource management software system implementations employ a match engine to locate and score resources based on the given search criteria (e.g., a particular skill and/or a particular level of a skill). The resource demand criteria often is given in a resource request, and a match engine can be configured to calculate a match score over a database of possible resources (e.g., programmers) to help the resource managers find a “best fit” from among known resources.
In some implementations of a legacy resource management software system, a match score is calculated based on two main factors: (1) a qualification match score, for example a ratio or percentage reflecting how much the resource's skills fit into the resource request, and (2) an availability match score, for example a calculated percentage of time a resource is available to work on a particular project within a particular required timeframe.
One approach often taken in legacy systems is to use a search engine to search for resources possessing the requested skills and then to calculate a qualification match score. Then, for any one or more of the resources returned by the search engine, to calculate an availability match score. In legacy systems, the scoring is performed outside the search engine and after the search engine has returned results.
One problem with such an approach that occurs frequently, especially in the case of a large volume of resources, is that candidate resources that might have a skill level (a qualification parameter) close to the requested level are never reported by the search engine. Especially under conditions of tight resources, the resource managers might like to know the availability of such resources, since (for example) a Java programmer of “skill level 2” can accomplish the same programming tasks as a Java programmer of “skill level 3”, given more time to complete the programming tasks. Thus, scoring techniques that simultaneously account for resource qualifications together with resource availability are needed.
Moreover, in order to have a quick response time, resource managers will limit the number of resources in the text search result to some relatively small number (such as 50) before performing the match score calculations. This legacy technique suffers from at least two deficiencies: First, when the number of resources in the search results is limited as heretofore described, it is possible that the resource scheduling tasks complete, but using non-optimal resources (since not all possible resources were returned in the limited search results). Second, it is possible that resources with only slightly lower qualifications (e.g., a slightly lower qualification match score) but highly available (e.g., a high availability match score) are not considered. Of course the aforementioned two deficiencies can occur whenever the qualification match score and the availability match score are calculated in two separate steps as just described.
Therefore, there is a need for an improved approach to address the above and other deficiencies of legacy systems for simultaneously scoring resource qualification and availability.